home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / ada_gwu / ppredef.c < prev    next >
C/C++ Source or Header  |  1996-01-30  |  9KB  |  171 lines

  1. /*
  2.  * Copyright (C) 1985-1992  New York University
  3.  * 
  4.  * This file is part of the Ada/Ed-C system.  See the Ada/Ed README file for
  5.  * warranty (none) and distribution info and also the GNU General Public
  6.  * License for more details.
  7.  
  8.  */
  9.  
  10. #include <stdlib.h>
  11. #include <stdio.h>
  12. #include <string.h>
  13. #include "config.h"
  14. #include "predef.h"
  15. #include "miscp.h"
  16. #include "ppredefp.h"
  17.  
  18. /* define procedures:
  19.  *    predef_code(str)   str => corresponding predef code (or zero if no such)
  20.  */
  21.     struct predef { 
  22.         char *pretab_name;
  23.         int   pretab_code;
  24.     } pretab[] = {
  25.     { "ADD_DUR_TIME"           , P_ADD_DUR_TIME           },
  26.     { "ADD_TIME_DUR"           , P_ADD_TIME_DUR           },
  27.     { "CLOCK"                  , P_CLOCK                  },
  28.     { "COL"                    , P_COL                    },
  29.     { "COL_FILE"               , P_COL_FILE               },
  30.     { "CURRENT_INPUT"          , P_CURRENT_INPUT          },
  31.     { "CURRENT_OUTPUT"         , P_CURRENT_OUTPUT         },
  32.     { "DAY"                    , P_DAY                    },
  33.     { "DIO_CLOSE"              , P_DIO_CLOSE              },
  34.     { "DIO_CREATE"             , P_DIO_CREATE             },
  35.     { "DIO_DELETE"             , P_DIO_DELETE             },
  36.     { "DIO_END_OF_FILE"        , P_DIO_END_OF_FILE        },
  37.     { "DIO_FORM"               , P_DIO_FORM               },
  38.     { "DIO_INDEX"              , P_DIO_INDEX              },
  39.     { "DIO_IS_OPEN"            , P_DIO_IS_OPEN            },
  40.     { "DIO_MODE"               , P_DIO_MODE               },
  41.     { "DIO_NAME"               , P_DIO_NAME               },
  42.     { "DIO_OPEN"               , P_DIO_OPEN               },
  43.     { "DIO_READ"               , P_DIO_READ               },
  44.     { "DIO_READ_FROM"          , P_DIO_READ_FROM          },
  45.     { "DIO_RESET"              , P_DIO_RESET              },
  46.     { "DIO_RESET_MODE"         , P_DIO_RESET_MODE         },
  47.     { "DIO_SET_INDEX"          , P_DIO_SET_INDEX          },
  48.     { "DIO_SIZE"               , P_DIO_SIZE               },
  49.     { "DIO_WRITE"              , P_DIO_WRITE              },
  50.     { "DIO_WRITE_TO"           , P_DIO_WRITE_TO           },
  51.     { "END_OF_LINE"            , P_END_OF_LINE            },
  52.     { "END_OF_LINE_FILE"       , P_END_OF_LINE_FILE       },
  53.     { "END_OF_PAGE"            , P_END_OF_PAGE            },
  54.     { "END_OF_PAGE_FILE"       , P_END_OF_PAGE_FILE       },
  55.     { "GET_CHAR_FILE_ITEM"     , P_GET_CHAR_FILE_ITEM     },
  56.     { "GET_CHAR_ITEM"          , P_GET_CHAR_ITEM          },
  57.     { "GET_ENUM_FILE_ITEM"     , P_GET_ENUM_FILE_ITEM     },
  58.     { "GET_ENUM_ITEM"          , P_GET_ENUM_ITEM          },
  59.     { "GET_ENUM_STRING"        , P_GET_ENUM_STRING        },
  60.     { "GET_FIXED_FILE_ITEM"    , P_GET_FIXED_FILE_ITEM    },
  61.     { "GET_FIXED_ITEM"         , P_GET_FIXED_ITEM         },
  62.     { "GET_FIXED_STRING"       , P_GET_FIXED_STRING       },
  63.     { "GET_FLOAT_FILE_ITEM"    , P_GET_FLOAT_FILE_ITEM    },
  64.     { "GET_FLOAT_ITEM"         , P_GET_FLOAT_ITEM         },
  65.     { "GET_FLOAT_STRING"       , P_GET_FLOAT_STRING       },
  66.     { "GET_INTEGER_FILE_ITEM"  , P_GET_INTEGER_FILE_ITEM  },
  67.     { "GET_INTEGER_ITEM"       , P_GET_INTEGER_ITEM       },
  68.     { "GET_INTEGER_STRING"     , P_GET_INTEGER_STRING     },
  69.     { "GET_LINE"               , P_GET_LINE               },
  70.     { "GET_LINE_FILE"          , P_GET_LINE_FILE          },
  71.     { "GET_STRING_FILE_ITEM"   , P_GET_STRING_FILE_ITEM   },
  72.     { "GET_STRING_ITEM"        , P_GET_STRING_ITEM        },
  73.     { "GE_TIME"                , P_GE_TIME                },
  74.     { "GT_TIME"                , P_GT_TIME                },
  75.     { "LE_TIME"                , P_LE_TIME                },
  76.     { "LINE"                   , P_LINE                   },
  77.     { "LINE_FILE"              , P_LINE_FILE              },
  78.     { "LINE_LENGTH"            , P_LINE_LENGTH            },
  79.     { "LINE_LENGTH_FILE"       , P_LINE_LENGTH_FILE       },
  80.     { "LT_TIME"                , P_LT_TIME                },
  81.     { "MONTH"                  , P_MONTH                  },
  82.     { "NEW_LINE"               , P_NEW_LINE               },
  83.     { "NEW_LINE_FILE"          , P_NEW_LINE_FILE          },
  84.     { "NEW_PAGE"               , P_NEW_PAGE               },
  85.     { "NEW_PAGE_FILE"          , P_NEW_PAGE_FILE          },
  86.     { "PAGE"                   , P_PAGE                   },
  87.     { "PAGE_FILE"              , P_PAGE_FILE              },
  88.     { "PAGE_LENGTH"            , P_PAGE_LENGTH            },
  89.     { "PAGE_LENGTH_FILE"       , P_PAGE_LENGTH_FILE       },
  90.     { "PUT_CHAR_FILE_ITEM"     , P_PUT_CHAR_FILE_ITEM     },
  91.     { "PUT_CHAR_ITEM"          , P_PUT_CHAR_ITEM          },
  92.     { "PUT_ENUM_FILE_ITEM"     , P_PUT_ENUM_FILE_ITEM     },
  93.     { "PUT_ENUM_ITEM"          , P_PUT_ENUM_ITEM          },
  94.     { "PUT_ENUM_STRING"        , P_PUT_ENUM_STRING        },
  95.     { "PUT_FIXED_FILE_ITEM"    , P_PUT_FIXED_FILE_ITEM    },
  96.     { "PUT_FIXED_ITEM"         , P_PUT_FIXED_ITEM         },
  97.     { "PUT_FIXED_STRING"       , P_PUT_FIXED_STRING       },
  98.     { "PUT_FLOAT_FILE_ITEM"    , P_PUT_FLOAT_FILE_ITEM    },
  99.     { "PUT_FLOAT_ITEM"         , P_PUT_FLOAT_ITEM         },
  100.     { "PUT_FLOAT_STRING"       , P_PUT_FLOAT_STRING       },
  101.     { "PUT_INTEGER_FILE_ITEM"  , P_PUT_INTEGER_FILE_ITEM  },
  102.     { "PUT_INTEGER_ITEM"       , P_PUT_INTEGER_ITEM       },
  103.     { "PUT_INTEGER_STRING"     , P_PUT_INTEGER_STRING     },
  104.     { "PUT_LINE"               , P_PUT_LINE               },
  105.     { "PUT_LINE_FILE"          , P_PUT_LINE_FILE          },
  106.     { "PUT_STRING_FILE_ITEM"   , P_PUT_STRING_FILE_ITEM   },
  107.     { "PUT_STRING_ITEM"        , P_PUT_STRING_ITEM        },
  108.     { "P_FILE"                 , P_P_FILE                 },
  109.     { "P_IN"                   , P_P_IN                   },
  110.     { "P_OUT"                  , P_P_OUT                  },
  111.     { "SECONDS"                , P_SECONDS                },
  112.     { "SET_COL"                , P_SET_COL                },
  113.     { "SET_COL_FILE"           , P_SET_COL_FILE           },
  114.     { "SET_INPUT"              , P_SET_INPUT              },
  115.     { "SET_LINE"               , P_SET_LINE               },
  116.     { "SET_LINE_FILE"          , P_SET_LINE_FILE          },
  117.     { "SET_LINE_LENGTH"        , P_SET_LINE_LENGTH        },
  118.     { "SET_LINE_LENGTH_FILE"   , P_SET_LINE_LENGTH_FILE   },
  119.     { "SET_OUTPUT"             , P_SET_OUTPUT             },
  120.     { "SET_PAGE_LENGTH"        , P_SET_PAGE_LENGTH        },
  121.     { "SET_PAGE_LENGTH_FILE"   , P_SET_PAGE_LENGTH_FILE   },
  122.     { "SIO_CLOSE"              , P_SIO_CLOSE              },
  123.     { "SIO_CREATE"             , P_SIO_CREATE             },
  124.     { "SIO_DELETE"             , P_SIO_DELETE             },
  125.     { "SIO_END_OF_FILE"        , P_SIO_END_OF_FILE        },
  126.     { "SIO_FORM"               , P_SIO_FORM               },
  127.     { "SIO_IS_OPEN"            , P_SIO_IS_OPEN            },
  128.     { "SIO_MODE"               , P_SIO_MODE               },
  129.     { "SIO_NAME"               , P_SIO_NAME               },
  130.     { "SIO_OPEN"               , P_SIO_OPEN               },
  131.     { "SIO_READ"               , P_SIO_READ               },
  132.     { "SIO_RESET"              , P_SIO_RESET              },
  133.     { "SIO_RESET_MODE"         , P_SIO_RESET_MODE         },
  134.     { "SIO_WRITE"              , P_SIO_WRITE              },
  135.     { "SKIP_LINE"              , P_SKIP_LINE              },
  136.     { "SKIP_LINE_FILE"         , P_SKIP_LINE_FILE         },
  137.     { "SKIP_PAGE"              , P_SKIP_PAGE              },
  138.     { "SKIP_PAGE_FILE"         , P_SKIP_PAGE_FILE         },
  139.     { "SPLIT"                  , P_SPLIT                  },
  140.     { "STANDARD_INPUT"         , P_STANDARD_INPUT         },
  141.     { "STANDARD_OUTPUT"        , P_STANDARD_OUTPUT        },
  142.     { "SUB_TIME_DUR"           , P_SUB_TIME_DUR           },
  143.     { "SUB_TIME_TIME"          , P_SUB_TIME_TIME          },
  144.     { "TIME_OF"                , P_TIME_OF                },
  145.     { "TIO_CLOSE"              , P_TIO_CLOSE              },
  146.     { "TIO_CREATE"             , P_TIO_CREATE             },
  147.     { "TIO_DELETE"             , P_TIO_DELETE             },
  148.     { "TIO_END_OF_FILE"        , P_TIO_END_OF_FILE        },
  149.     { "TIO_END_OF_FILE_FILE"   , P_TIO_END_OF_FILE_FILE   },
  150.     { "TIO_FORM"               , P_TIO_FORM               },
  151.     { "TIO_IS_OPEN"            , P_TIO_IS_OPEN            },
  152.     { "TIO_MODE"               , P_TIO_MODE               },
  153.     { "TIO_NAME"               , P_TIO_NAME               },
  154.     { "TIO_OPEN"               , P_TIO_OPEN               },
  155.     { "TIO_RESET"              , P_TIO_RESET              },
  156.     { "TIO_RESET_MODE"         , P_TIO_RESET_MODE         },
  157.     { "YEAR"                   , P_YEAR                   },
  158.     { (char *)0, 0 }
  159.     };
  160. int predef_code(char *name)                                    /*;predef_code*/
  161. {
  162.     /* return code given predef opcode name */
  163.     int i;
  164.     
  165.     for (i = 0; ; i++) {
  166.         if (pretab[i].pretab_name == (char *)0) chaos("predef_code failed");
  167.         if (strcmp(pretab[i].pretab_name, name) == 0 ) break;
  168.     }
  169.     return pretab[i].pretab_code;
  170. }
  171.